package graph

import (
	"encoding/json"
	"power/core/dao/table"
	"power/core/localwrap"
)

var log = localwrap.GetLogger().WithPkg("itodo/core/service/graph")

// type Graph struct {
// 	GraphProp GraphProp
// 	Nodes     []interface{}
// }
// type GraphProp struct {
// 	X     float64
// 	Y     float64
// 	Scale int
// }

// type ElemenNode struct {
// 	Name     string
// 	X        float64
// 	Y        float64
// 	Styles   map[string]interface{}
// 	UILabels []UILabel
// 	UIImages []UIImage
// }

// type ElemenEdge struct {
// 	Name     string
// 	From     int
// 	To       int
// 	Styles   map[string]interface{}
// 	HasArrow bool
// 	UILabels []UILabel
// 	UIImages []UIImage
// }
// type UILabel struct {
// 	Text    string
// 	Styles  map[string]interface{}
// 	ProtoId int
// }

// type UIImage struct {
// 	Styles       map[string]interface{}
// 	LabelProtoId int
// }

func Unmarshal(str string, v interface{}) {
	err := json.Unmarshal([]byte(str), v)
	if err != nil {
		log.Error().Err(err).Stack().Msg(err.Error())
	}
}

func Marshal(v interface{}) string {
	bs, err := json.Marshal(v)
	if err != nil {
		log.Error().Err(err).Stack().Msg(err.Error())
	}
	return string(bs)
}

type GraphElement struct {
	table.GraphElement
	Props Props
}
type Graph struct {
	table.Graph
	Props Props
}
type GraphElementProto struct {
	table.GraphElementProto
	Props Props
}

type GraphElementProtoClass struct {
	table.GraphElementProtoClass
	Protos []GraphElementProto
}
